const Classify=require('../models/cate.model.js');

exports.create=function(req,res,next){
    const classify=new Classify(req.body);
    classify.save().then((data)=>{
        res.json(data);
    }) 
}

exports.update = function(req,res,next){
    const id = req.params.id;
    Classify.findByIdAndUpdate(id,{$set: req.body},{new:false})
    .then(data=>{
        res.json(data); // 这里返回的数据是修改之前的数据，不是修改之后的数据
    })
}

exports.remove = function(req,res,next){
    var id = req.params.id;
    // const classify=new Classify();
    // console.log(id);
    // classify.remove({'_id':id}).then(data=>{
    //     console.log(data);
    //     res.json(data);
    // });
    // Classify.findByIdAndDelete(id,(err,data)=>{
    //     res.json(data);
    // })
    del(id);
}
exports.removemore=function(req,res,next){
	var ids=req.params.id;
	var arr=ids.split(',');
	for(value of arr){
		del(value);
	}
}

function del(id){
    Classify.find({_id:id}).then(data1=>{
        if(data1){
        	if(!data1[0]._id){data1[0]._id=null}
            Classify.findByIdAndDelete(data1[0]._id,(err,data)=>{console.log(err)});
            Classify.find({parentId:id}).then(data2=>{
                if(data2){
                    for(var i=0;i<data2.length;i++){
                        del(data2[i]._id);
                        Classify.findByIdAndDelete(data2[i]._id,(err,data)=>{});
                    }
                }
            })
        }
    })
}

exports.list = function(req,res,next){
    var type=req.params.type || 1;
    Classify.find({type:type}).then(data=>{
        var t=Tree(data,null);
        res.json(t);
    })
}
//exports.getDataByparentId = function(req,res,next){
//  var parentId=req.params.parentId || 1;
//  Classify.find({parentId:parentId}).then(data=>{
//      res.json(data);
//  })
//}

exports.getData=function(req,res,next){
    var id =req.params.id;
    Classify.findById(id).then(data=>{
        res.json(data);
    })
}

function Tree(data,pid){
    var arr=[],temp;
    var data=JSON.parse(JSON.stringify(data));
    for(var i in data){
        if(data[i].parentId==pid){
            arr.push(data[i]);
            temp=Tree(data,data[i]._id);
            if(temp.length>0){
                data[i].children=temp;
            }else {
                data[i].classify = data[i]._id;
            }
        }
    }
    return arr;
}

exports.classList = function (req, res, next) {
    var type = req.params.type || 1;
    Classify.find({ type: type }).then(data => {
        var classId = []
        function classify(data, pid) {
            var result = [], temp;
            var data = JSON.parse(JSON.stringify(data));
            for (const i in data) {
                if (data[i].parentId == pid) {
                    result.push(data[i]);
        
                    temp = classify(data, data[i]._id);
                    if (temp.length > 0) {
                        data[i].children = temp;
                    } else {
                        classId.push(data[i]);
                    }
                }
            }
            return result;
        }

        classify(data, null);
        res.json(classId);
       
    })

}